
import javafx.scene.Node;
import javafx.scene.control.CheckBox;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.text.Text;

/*
 * To change this template, choose Tools | Templates and open the template in
 * the editor.
 */
/**
 *
 * @author enrico
 */
public class FindLibriController {

  private FindLibriView view;
  private Biblioteca controller;

  public FindLibriController(Biblioteca cont) {
    view = new FindLibriView(this);
    controller = cont;
  }
  
  public FindLibriView getView() {
    return view;
  }

  void search(String titolo, String autore, String editore, boolean s1, boolean s2, boolean s3, boolean s4, boolean sottotitoli) throws Exception {
    String query = "SELECT (SELECT data FROM prestiti WHERE ID=ID_libro AND rientrato=\"0\") as dataPrestito,*, (SELECT rientrato FROM prestiti WHERE ID=ID_libro) as rientrato FROM biblioteche";
    boolean where = false;
    boolean and = false;
    boolean or = false;
    if (!titolo.isEmpty()) {
      where = true;
      and = true; // ci va d'ora in poi
      String[] titoloAtom = titolo.split(" ");
      String like = "";

      for (int i=0; i<titoloAtom.length; i++) {
        if (!titoloAtom[i].equalsIgnoreCase("")) {
          if (i>0 && i!=titoloAtom.length) like = like.concat(" OR ");
          like = like.concat("'%"+titoloAtom[i]+"%' ");
        }
      }
      
      query = query.concat(" WHERE titolo LIKE "+like);
    }
    if (!autore.isEmpty()) {
      if (!where) {
        // non c'è il where
        where = true;
        query = query.concat(" WHERE ");
      }
      if (and) {
        query = query.concat(" AND ");
      } else and = true;
      query = query.concat(" autore LIKE '%"+autore+"%'");
    }
    
    if (!editore.isEmpty()) {
      if (!where) {
        // non c'è il where
        where = true;
        query = query.concat(" WHERE ");
      }
      if (and) {
        query = query.concat(" AND ");
      } else and = true;
      query = query.concat(" editore LIKE '%"+autore+"%'");
    }
    
    if (s1) {
      if (!where) {
        // non c'è il where
        where = true;
        query = query.concat(" WHERE ");
      }
      if (and) {
       if (!or) {
         query = query.concat(" AND (");
         or = true;
       } 
       else query = query.concat(" OR ");
      } else and = true;
      query = query.concat(" sezione=\"1\"");
    }
    if (s2) {
      if (!where) {
        // non c'è il where
        where = true;
        query = query.concat(" WHERE ");
      }
      if (and) {
       if (!or) {
         query = query.concat(" AND (");
         or = true;
       } 
       else query = query.concat(" OR ");
      } else and = true;
      query = query.concat(" sezione=\"2\"");
    }
    if (s3) {
      if (!where) {
        // non c'è il where
        where = true;
        query = query.concat(" WHERE ");
      }
      if (and) {
       if (!or) {
         query = query.concat(" AND (");
         or = true;
       } 
       else query = query.concat(" OR ");
      } else and = true;
      query = query.concat(" sezione=\"3\"");
    }
    if (s4) {
      if (!where) {
        // non c'è il where
        where = true;
        query = query.concat(" WHERE ");
      }
      if (and) {
       if (!or) {
         query = query.concat(" AND (");
         or = true;
       } 
       else query = query.concat(" OR ");
      } else and = true;
      query = query.concat(" sezione=\"4\"");
    }
    
    if (or) query = query.concat(")");
    
    if (sottotitoli && !titolo.isEmpty()) {
      if (!where) {
        // non c'è il where
        where = true;
        query = query.concat(" WHERE ");
      }
      if (and) {
        query = query.concat(" OR ");
      } else and = true;
      query = query.concat(" sottotitolo LIKE '%"+titolo+"%' ");
    }
    
    query = query.concat(" ORDER BY titolo ASC");
    //System.out.println(query);
    view.setRisultati(query);
  }

  void goToBook(LibroModel lm) {
    controller.goToBook(lm);
  }

}
